home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tech Arsenal 1
/
Tech Arsenal (Arsenal Computer).ISO
/
tek-02
/
bldpas.zip
/
SCRNCNTL.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1980-01-01
|
5KB
|
216 lines
UNIT SCRNCNTL;
INTERFACE
USES CRT, RAPSVARS;
Procedure ENTERDATA;
Procedure FindFldseq;
Implementation
Procedure FindFldseq;
Begin
IF Fldseq < Frstdatafld Then Fldseq := Frstdatafld;
IF Skip_Prev Then
Begin
While (Mapattr[Fldseq] = 'P')
And (Fldseq > Frstdatafld) DO
Fldseq := Fldseq - 1;
End;
IF (Fldseq = Frstdatafld)
And (Mapattr[Fldseq] = 'P') Then
Begin
Fldseq := Fldseq + 1;
Skip_Prev := False;
End;
IF (Fldseq = Lastdatafld)
And (Mapattr[Fldseq] = 'P') Then
Begin
Fldseq := Fldseq - 1;
Skip_Prev := True;
End;
While (Mapattr[Fldseq] = 'P')
And (Fldseq > Frstdatafld)
And (Fldseq < Lastdatafld) DO
Fldseq := Fldseq + 1;
Case Mapcolr[Fldseq] of
'B' : Textcolor(Blue);
'R' : Textcolor(Red);
'G' : Textcolor(Green);
'C' : Textcolor(Cyan);
'K' : Textcolor(Black);
'Y' : Textcolor(Yellow);
'W' : Textcolor(White);
'M' : TextColor(Magenta);
End;
End;
Procedure Enterdata;
Begin
Skip_Prev := False;
Continue := True;
Fldseq := HldFldseq;
FindFldseq;
Gotoxy(Mappos[Fldseq], Mapln[Fldseq]);
While Continue DO
Begin
Fkey := False;
Skip_prev := False;
Keychar := Readkey;
Hldchar := Keychar;
Case Keychar Of
#0 :
Begin
Fkey := True;
Keychar := Readkey;
CASE Keychar OF
#15 : Begin
IF Fldseq > Frstdatafld Then
Begin
Fldseq := Fldseq - 1;
Skip_Prev := True;
FindFldseq;
End;
End;
#71 : Begin
Fldseq := Frstdatafld;
FindFldseq;
Xpos := Mappos[Fldseq];
Ypos := Mapln[Fldseq];
Gotoxy(Xpos, Ypos);
End;
#72 : Gotoxy(Wherex,Wherey-1);
#75 : Gotoxy(Wherex-1,Wherey);
#77 : Gotoxy(Wherex+1,Wherey);
#79 : Begin
Fldseq := Lastdatafld;
Skip_Prev := True;
FindFldseq;
Xpos := Mappos[Fldseq];
Ypos := Mapln[Fldseq];
Gotoxy(Xpos, Ypos);
Fldseq := Lastdatafld;
End;
#80 : Gotoxy(Wherex,Wherey+1);
#59, #60, #61, #62, #63, #64, #65, #66, #67,
#68, #73, #81 : Continue := False;
End;
End;
#9 : Begin
IF Fldseq < Lastdatafld Then
Begin
Skip_Prev := False;
Fldseq := Fldseq + 1;
FindFldseq;
End;
End;
#13 : Continue := False;
#27 : Continue := False;
ELSE
Scrnln[Wherey, Wherex] := Keychar;
If MapAttr[FldSeq] <> 'N' Then
Begin
WRITE(Keychar);
End
Else
Begin
Write(' ');
End;
Keychar := ' ';
IF Mappos[Fldseq] > Wherex Then
Begin
IF Fldseq > Frstdatafld Then
Begin
Fldseq := Fldseq - 1;
Skip_Prev := True;
FindFldseq;
End;
Xpos := Mappos[Fldseq];
Ypos := Mapln[Fldseq];
Gotoxy(Xpos, Ypos);
End;
IF Mappos[Fldseq] +
Maplen[Fldseq] - 1 < Wherex Then
Begin
IF Fldseq < Lastdatafld Then
Begin
Fldseq := Fldseq + 1;
FindFldseq;
End;
Xpos := Mappos[Fldseq];
Ypos := Mapln[Fldseq];
Gotoxy(Xpos, Ypos);
End;
End;
IF Fldseq < Frstdatafld Then
Begin
Fldseq := Frstdatafld;
FindFldseq;
End;
IF Fldseq > Lastdatafld Then
Begin
Fldseq := Lastdatafld;
FindFldseq;
End;
IF ((Keychar = #77)
And (Mappos[Fldseq]+Maplen[Fldseq]-1
< Wherex))
OR (Keychar = #9) OR (Keychar = #80) Then
Begin
IF (Keychar = #77) OR (Keychar = #80) Then
Begin
IF Fldseq < Lastdatafld Then
Begin
Fldseq := Fldseq + 1;
FindFldseq;
End;
End;
Xpos := Mappos[Fldseq];
Ypos := Mapln[Fldseq];
Gotoxy(Xpos, Ypos);
End;
IF ((Keychar = #75)
And (Mappos[Fldseq] > Wherex))
OR (Keychar = #15) OR (Keychar = #72) Then
Begin
IF (Keychar = #72) OR (Keychar = #75) Then
Begin
IF Fldseq > Frstdatafld Then
Begin
Fldseq := Fldseq - 1;
Skip_Prev := True;
FindFldseq;
End;
End;
Xpos := Mappos[Fldseq];
Ypos := Mapln[Fldseq];
Gotoxy(Xpos, Ypos);
End;
Xpos := Wherex;
Ypos := Wherey;
Function_Key := Keychar;
Keychar := Hldchar;
HldFldseq := Fldseq;
CASE Keychar OF
#4, #13, #27 : Continue := False;
End;
End;
End;
END.